/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author CarlosAndre
 */
/*
 * Tomado de Stack.java ubicado en el curso de Algoritmos y Estructura de datos
 * uvg.blackboard.com
 */


public interface Stack<E> 
{
   /** Descripción: agrega un item al Stack
     * Nombre: Push
     * Parametros: item de tipo E (dato generico)
     * Pre-condicion: 
     * Post-condicion: es agregado un item al Stack
     */
   public void push(E item);
   
   /** Descripción: elimina un item del Stack
     * Nombre: Pop
     * Parametros: item de tipo E (dato generico)
     * Pre-condicion: tiene que haber un item
     * Post-condicion: elimina el ultimo item del Stack
     */
   public E pop();
  
   /** Descripción: revisa el ultimo valor del Stack
     * Nombre: Peek
     * Parametros: ninguno
     * Pre-condicion: No debe estar vacia el Stack
     * Post-condicion: El ultimo valor en el Stack
     */
   public E peek();
  
  
   /** Descripción: se verifica el tamaño del Stack
     * Nombre: size
     * Parametros: ninguno
     * Pre-condicion: 
     * Post-condicion: devuelve el tamaño del Stack
     */
   public int size();
   
   /** Descripción: verifica si el Stack esta vacio
     * Nombre: empty
     * Parametros: ninguno
     * Pre-condicion: 
     * Post-condicion: devuelve el si el Stack esta vacio (true o false)
     */
   public boolean empty();
}
